<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery/jquery.min.js"></script>
</head>

<body>
    <script>
        // Promise的理解
        // promise是es6新增的解决异步编程的一种方案，可以解决es5中回调地狱的问题，主要是通过回调函数将得到的结果抛出，
        // 让我们可以在函数外部访问到结果
        // 它可以将异步的请求改成同步的执行，promise是同步执行的，他的then方法和catch方法是异步执行的

        // promise有三个状态  pending  fulfilled  rejected
        // 在调用resolve时状态会转换为fulfilled 调用reject时转换为rejected

        // promise 常用的方法
        // then() 调用resolve会将成功的结果返回给then的第一个参数，reject会将结果返回给then的第二个参数
        // catch()  调用reject会将结果返回到catch
        // all()  可以请求多个接口，需要使用数组的形式传递，如果有一个失败，就返回失败信息，都成功的话才会返回成功的信息
        // race() 可以请求多个接口，需要使用数组的形式传递，无论请求成功还是失败，都返回请求速度最快的那个
        // finally() 无论成功还是失败，都会触发这个方法

        function pro(url) {
            return new Promise((resolve, reject) => {
                $.ajax({
                    url: url,
                    success: function(res) {
                        resolve(res)
                    },
                    error: function(err) {
                        reject(err)
                    }
                })
            })
        }

        let p = pro("data/1.json")
        p.then((res) => {
            console.log(res);
        }).catch((err) => {
            console.log(err);
        })
    </script>
</body>

</html>